﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using MJM.RPP.EntidadesNegocio;
using MJM.Principal;
using MJM.SPP.EntidadesNegocio;
using System.Collections.Generic;
using MJM.SCA.EntidadesNegocio;

namespace wRegPadron.frmOpciones
{
    public partial class ucDatosPersonales : System.Web.UI.UserControl
    {
        public static List<OficioEN> lst = new List<OficioEN>(); 
        public PersonaE objPersonaE;
        public bool IsMuni=false;

        public void SetPersona(PersonaE obj)
        {
            objPersonaE = obj;
        }

        private void InsertarLog(String prm2, String prm3)
        {
            string ipusuario = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            if (ipusuario == null)
                ipusuario = "";

            LogTramiteEN objLogTramiteEN = new LogTramiteEN();
            string mes, dia;
            if (DateTime.Now.Month < 10)
                mes = "0" + DateTime.Now.Month.ToString();
            else mes = DateTime.Now.Month.ToString();

            if (DateTime.Now.Day < 10)
                dia = "0" + DateTime.Now.Day.ToString();
            else dia = DateTime.Now.Day.ToString();
            objLogTramiteEN.LOGAW_chFECMOD = DateTime.Now.Year.ToString() + mes + dia;
            objLogTramiteEN.LOGAW_chFECREG = DateTime.Now.ToShortDateString();
            objLogTramiteEN.LOGAW_chHORREG = DateTime.Now.ToShortTimeString();
            objLogTramiteEN.LOGAW_chIPCLIEN = ipusuario;
            objLogTramiteEN.LOGAW_chPARDOS = prm2;
            objLogTramiteEN.LOGAW_chPARUNO = Session["Usuario"].ToString();
            objLogTramiteEN.LOGAW_chPARTRE = prm3;
            objLogTramiteEN.LOGAW_inHORMOD = DateTime.Now.Hour;
            objLogTramiteEN.LOGAW_chNOMAPL = "Padrón";
            MediadorCN.GetLogTramite().Insertar(objLogTramiteEN);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                int tipo = Convert.ToInt32(Session["muni"]);
                if (tipo == 1)
                {
                    IsMuni = true;
                    txtCelular.Visible = false;
                    lblTextoCelular.Visible = false;
                    lblTextoLibretaMilitar.Visible = true;
                    lblTextoBrevete.Visible = true;
                    lblTextoESSALUD.Visible = true;
                    txtLibretaMilitar.Visible = true;
                    txtESSALUD.Visible = true;
                    txtBrevete.Visible = true;
                    pPerNatural.Visible = true;
                    pPerJuridica.Visible = false;
                    objPersonaE = MediadorCN.GetPersona().ObtenerPerTramite(Session["Usuario"].ToString());
                }
                else
                {
                    lblTextoLibretaMilitar.Visible = false;
                    lblTextoBrevete.Visible = false;
                    lblTextoESSALUD.Visible = false;
                    txtLibretaMilitar.Visible = false;
                    txtESSALUD.Visible = false;
                    txtBrevete.Visible = false;
                    objPersonaE = MediadorCN.GetPersona().ObtenerPerTramite(Session["UsuLog"].ToString());
                }
                SubOpcionEN objSubOpcionEN = MediadorCN.GetSubOpcion().ObtenerTexto("MenuDatosPersonales");
                lblTitulo.Text = objSubOpcionEN.SUBOPT_chNOMSOP;
                lblDescripcion.Text = objSubOpcionEN.SUBOPT_chDESSOP;
                
                if (objPersonaE.IDTipoPersona == 1)
                {
                    pPerNatural.Visible = true;
                    pPerJuridica.Visible = false;
                    OficioEN objOficioEN = new OficioEN();
                    objOficioEN.PAD_P_chIDPER = Session["UsuLog"].ToString();
                    objOficioEN.OFIPER_chDESOFI = "";
                    objOficioEN.OFIPER_chINSEST = "";
                    objOficioEN.NombrePersona = "";
                    lst = MediadorCN.GetOficio().Listar(objOficioEN);

                    int anioini = DateTime.Now.Year - 90;
                    int aniofin = DateTime.Now.Year - 18;
                    for (int i = anioini; i <= aniofin; i++)
                        ddlAnio.Items.Insert(0, i.ToString());
                    ddlAnio.Items.Insert(0, "Año");
                    for (int i = 1; i < 32; i++)
                        if (i.ToString().Length < 2)
                            ddlDia.Items.Add("0" + i.ToString());
                        else
                            ddlDia.Items.Add(i.ToString());
                    ddlDia.DataBind();
                    ddlAnio.DataBind();

                    txtNombres.Text = objPersonaE.Nombres;
                    txtApeMaterno.Text = objPersonaE.ApeMaterno;
                    txtApePaterno.Text = objPersonaE.ApePaterno;
                    if (objPersonaE.Sexo == 'F')
                        rbfemenino.Checked = true;
                    if (objPersonaE.Sexo == 'M')
                        rbMasculino.Checked = true;
                    if (objPersonaE.FechaNamiento != "")
                    {
                        int fecha = Convert.ToInt32(objPersonaE.FechaNamiento);
                        int dia = fecha % 100;
                        int mes = (fecha / 100) % 100;
                        int anio = (fecha / 10000);

                        ddlAnio.Text = anio.ToString();
                        if (mes.ToString().Length < 2)
                            ddlMes.SelectedValue = "0" + mes.ToString();
                        else
                            ddlMes.SelectedValue = mes.ToString();
                        if (dia.ToString().Length < 2)
                            ddlDia.SelectedValue = "0" + dia.ToString();
                        else
                            ddlDia.SelectedValue = dia.ToString();
                    }
                }
                else if (objPersonaE.IDTipoPersona == 2)
                {
                    txtRazonSocial.Text = objPersonaE.RazonSocial;
                    pPerNatural.Visible = false;
                    pPerJuridica.Visible = true;
                }

                txtTelefono.Text = objPersonaE.Telefono1;
                txtCelular.Text = objPersonaE.Celular1;
                txtEmail.Text = objPersonaE.Email;
                txtTwitter.Text = objPersonaE.Twitter;
                txtFacebook.Text = objPersonaE.FaceBook;
                txtBrevete.Text = objPersonaE.Brevete;
                txtESSALUD.Text = objPersonaE.ESSALUD;
                txtLibretaMilitar.Text = objPersonaE.LibretaMilitar;
            }
        }

        protected void CambiarDia(object sender, EventArgs e)
        {
            int dia = ddlDia.SelectedIndex;
            int mes = ddlMes.SelectedIndex;
            ddlDia.Items.Clear();
            if (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)
            {
                for (int i = 1; i < 32; i++)
                    if (i.ToString().Length < 2)
                        ddlDia.Items.Add("0" + i.ToString());
                    else
                        ddlDia.Items.Add(i.ToString());
                ddlDia.DataBind();
                if (dia < 31)
                    ddlDia.SelectedIndex = dia;
            }
            else if (mes == 2)
            {
                for (int i = 1; i < 29; i++)
                    if (i.ToString().Length < 2)
                        ddlDia.Items.Add("0" + i.ToString());
                    else
                        ddlDia.Items.Add(i.ToString());
                ddlDia.DataBind();
                if (dia < 28)
                    ddlDia.SelectedIndex = dia;
            }
            else if (mes == 4 || mes == 6 || mes == 9 || mes == 11)
            {
                for (int i = 1; i < 31; i++)
                    if (i.ToString().Length < 2)
                        ddlDia.Items.Add("0" + i.ToString());
                    else
                        ddlDia.Items.Add(i.ToString());
                ddlDia.DataBind();
                if (dia < 30)
                    ddlDia.SelectedIndex = dia;
            }
        }

        protected void gvOficios_Seleccionar(object sender, GridViewCommandEventArgs e)
        {
            int index = -1;
            if (e.CommandName == "Eliminar")
            {
                index = Convert.ToInt32(e.CommandArgument);
                if (index <= lst.Count - 1)
                {
                    int codigo = MediadorCN.GetOficio().Eliminar(lst[index].OFIPER_P_inID);
                    if (codigo > 0)
                    {
                        OficioEN objOficioEN = new OficioEN();
                        objOficioEN.OFIPER_chDESOFI = "";
                        objOficioEN.OFIPER_chINSEST = "";
                        objOficioEN.NombrePersona = "";
                        objOficioEN.PAD_P_chIDPER = Session["UsuLog"].ToString();
                        lst = MediadorCN.GetOficio().Listar(objOficioEN);
                    }
                }
            }
           
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            int tipo = Convert.ToInt32(Session["muni"]);
            if (tipo==1)
            {
                objPersonaE = MediadorCN.GetPersona().ObtenerPerTramite(Session["Usuario"].ToString());
                objPersonaE.ApeMaterno = txtApeMaterno.Text.ToUpper();
                objPersonaE.ApePaterno = txtApePaterno.Text.ToUpper();
                objPersonaE.Nombres = txtNombres.Text.ToUpper();
                objPersonaE.NombreCompleto = objPersonaE.ApePaterno + " " + objPersonaE.ApeMaterno + " " + objPersonaE.Nombres;
                objPersonaE.Email = txtEmail.Text;
                if (rbMasculino.Checked)
                    objPersonaE.Sexo = 'M';
                else if (rbfemenino.Checked)
                    objPersonaE.Sexo = 'F';
                objPersonaE.Telefono1 = txtTelefono.Text;
                objPersonaE.FaceBook = txtFacebook.Text;
                objPersonaE.Twitter = txtTwitter.Text;
                objPersonaE.Celular1 = txtCelular.Text;
                objPersonaE.ESSALUD = txtESSALUD.Text;
                objPersonaE.Brevete = txtBrevete.Text;
                objPersonaE.LibretaMilitar = txtLibretaMilitar.Text;
                objPersonaE.FechaNamiento = ddlAnio.SelectedItem.Text+ddlMes.SelectedValue + ddlDia.SelectedItem.Text;
                objPersonaE.EMP_chIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
                objPersonaE.EMP_chNOMSIS = "Padrón";
                int codigo = MediadorCN.GetPersona().ActualizarEnTramite(objPersonaE);
                if (codigo > 0)
                {
                    lblErrorActualizacion.Text = "Se actualizó la información correctamente.";
                    InsertarLog("Actualización de datos personales", "Correcto");
                }
                else
                {
                    lblErrorActualizacion.Text = "No se pudo actualizar la información";
                    InsertarLog("Actualización de datos personales", "Fallido");
                }
            }
            else
            {
                objPersonaE = MediadorCN.GetPersona().ObtenerPerTramite(Session["UsuLog"].ToString());
                if (objPersonaE.IDTipoPersona == 1)
                {                
                    objPersonaE.ApeMaterno = txtApeMaterno.Text.ToUpper();
                    objPersonaE.ApePaterno = txtApePaterno.Text.ToUpper();
                    objPersonaE.Nombres = txtNombres.Text.ToUpper();
                    objPersonaE.NombreCompleto = objPersonaE.ApePaterno + " " + objPersonaE.ApeMaterno + " " + objPersonaE.Nombres;
                    objPersonaE.Email = txtEmail.Text;
                    if (rbMasculino.Checked)
                        objPersonaE.Sexo = 'M';
                    else if (rbfemenino.Checked)
                        objPersonaE.Sexo = 'F';
                    objPersonaE.Telefono1 = txtTelefono.Text;
                    objPersonaE.FaceBook = txtFacebook.Text;
                    objPersonaE.Twitter = txtTwitter.Text;
                    objPersonaE.Celular1 = txtCelular.Text;
                    objPersonaE.FechaNamiento = ddlAnio.SelectedItem.Text + ddlMes.SelectedValue + ddlDia.SelectedItem.Text;
                    int codigo = MediadorCN.GetPersona().ActualizarPadron(objPersonaE);
                    if (codigo > 0)
                    {
                        lblErrorActualizacion.Text = "Se actualizó la información correctamente.";
                        InsertarLog("Actualización de datos personales", "Correcto");
                    }
                    else
                    {
                        lblErrorActualizacion.Text = "No se pudo actualizar la información";
                        InsertarLog("Actualización de datos personales", "Fallido");
                    }
                }
                else if (objPersonaE.IDTipoPersona == 2)
                {
                    objPersonaE.NombreCompleto = txtRazonSocial.Text.ToUpper();
                    objPersonaE.RazonSocial = txtRazonSocial.Text.ToUpper();                 
                    objPersonaE.Telefono1 = txtTelefono.Text;
                    objPersonaE.FaceBook = txtFacebook.Text;
                    objPersonaE.Twitter = txtTwitter.Text;
                    objPersonaE.Celular1 = txtCelular.Text;
                    int codigo = MediadorCN.GetPersona().ActualizarPadron(objPersonaE);
                    if (codigo > 0)
                    {
                        lblErrorActualizacion.Text = "Se actualizó la información correctamente.";
                        InsertarLog("Actualización de datos personales", "Correcto");
                    }
                    else
                    {
                        lblErrorActualizacion.Text = "No se pudo actualizar la información";
                        InsertarLog("Actualización de datos personales", "Fallido");
                    }
                }
            }
        }
    }
}